package org.ehe.finance.customer.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.ehe.common.mybatis.core.domain.BaseEntity2;
import org.ehe.finance.customer.domain.ErpFinanceCustomer;

import java.math.BigDecimal;

/**
 * 客户档案Bo
 * @author :zhangnn
 * @className :ErpFinanceCustomerBo
 * @description: TODO
 * @date 2025-08-27 16:30:09
 */
@Data
@AutoMapper(target = ErpFinanceCustomer.class,reverseConvertGenerate = false)
public class ErpFinanceCustomerBo extends BaseEntity2 {
    /**
     * 客户ID，更新时需要
     */
    private Long id;

    /**
     * 客户编码
     */
    @NotBlank(message = "客户编码不能为空")
    @Size(max = 30, message = "客户编码长度不能超过30个字符")
    private String customerCode;

    /**
     * 客户名称
     */
    @NotBlank(message = "客户名称不能为空")
    @Size(max = 100, message = "客户名称长度不能超过100个字符")
    private String customerName;

    /**
     * 客户类型:1企业,2个人
     */
    @NotNull(message = "客户类型不能为空")
    private Integer customerType;

    /**
     * 统一社会信用代码
     */
    @Size(max = 30, message = "统一社会信用代码长度不能超过30个字符")
    private String creditCode;

    /**
     * 纳税人识别号
     */
    @Size(max = 30, message = "纳税人识别号长度不能超过30个字符")
    private String taxNo;

    /**
     * 联系人
     */
    @Size(max = 50, message = "联系人姓名长度不能超过50个字符")
    private String contactPerson;

    /**
     * 联系电话
     */
    @Pattern(regexp = "^$|^1[3-9]\\d{9}$|^0\\d{2,3}-\\d{7,8}$", message = "联系电话格式不正确")
    private String phone;

    /**
     * 邮箱
     */
    @Pattern(regexp = "^$|^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$", message = "邮箱格式不正确")
    private String email;

    /**
     * 地址
     */
    @Size(max = 255, message = "地址长度不能超过255个字符")
    private String address;

    /**
     * 开户银行
     */
    @Size(max = 100, message = "开户银行名称长度不能超过100个字符")
    private String bankName;

    /**
     * 银行账号
     */
    @Size(max = 50, message = "银行账号长度不能超过50个字符")
    private String bankAccount;

    /**
     * 信用额度
     */
    private BigDecimal creditLimit = BigDecimal.ZERO;

    /**
     * 付款期限(天)
     */
    private Integer paymentTerm = 0;

    /**
     * 状态:0禁用,1启用
     */
    private Integer status;
}
